{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "changing-buyer",
   "metadata": {
    "pycharm": {
     "is_executing": true
    }
   },
   "outputs": [],
   "source": [
    "from gs_quant.session import GsSession\n",
    "# external users should substitute their client id and secret; please skip this step if using internal jupyterhub\n",
    "GsSession.use(client_id=None, client_secret=None,scopes=('read_product_data', 'run_analytics')) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "prostate-identifier",
   "metadata": {},
   "outputs": [],
   "source": [
    "from gs_quant.instrument import FXOption, EqOption\n",
    "from gs_quant.data import Dataset\n",
    "from gs_quant.timeseries import last_value, correlation, percentiles, volatility, Returns\n",
    "from gs_quant.risk import FXSpot\n",
    "from gs_quant.datetime.relative_date import RelativeDate\n",
    "from gs_quant.markets.portfolio import Portfolio\n",
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "import warnings\n",
    "warnings.filterwarnings('ignore')\n",
    "pd.set_option('display.precision', 2)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "mounted-atlas",
   "metadata": {},
   "source": [
    "## EQ FX Hedging Screen\n",
    "\n",
    "We screen for the most attractive FX options to hedge an equity index such as S&P. For each 3m FX option, we the direction is chosen based on historical 1y correlations using weekly returns. The strikes and notionals of the FX options are adjusted by the 6m realized vol ratio to an equity index. \n",
    "\n",
    "Realized Correlation uses weekly returns with the currency value in USD and percentile uses a 5y history. 6m realized volatility ratio uses weekly returns. Strike price is spot + FX / SPX vol ratio. Strike and Spot are in normal spot convention. Discount to SPX is FX Option premium / SPX price. Past performance is not indicative of future results. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "signal-ground",
   "metadata": {},
   "outputs": [],
   "source": [
    "def calculate_screen(eq_ric, fx_crosses, start=RelativeDate('-5y').apply_rule(), end=RelativeDate('-1b').apply_rule()):\n",
    "    fxspot_data = Dataset('WMFXSPOT').get_data(start, end, bbid=fx_crosses)\n",
    "    fxspot_df = pd.pivot_table(fxspot_data, values='midPrice', index=['date'], columns=['bbid']).resample('W-FRI').last()\n",
    "    eq = Dataset('TREOD').get_data(start, end, ric=eq_ric).closePrice.resample('W-FRI').last()\n",
    "    eq_vol = last_value(volatility(eq, 24))\n",
    "    cors = pd.DataFrame({bbid: correlation(eq, 1/fxspot_df[bbid] if bbid[0] == 'U' else fxspot_df[bbid] , 52) for bbid in fx_crosses})\n",
    "    cur_cor = pd.Series(cors.tail(1).squeeze()*100, name='1y Realized Correlation (%)')\n",
    "    pct_cor = pd.Series({bbid: last_value(percentiles(cors[bbid])) for bbid in fx_crosses}, name='Corr %-ile')\n",
    "    vol_ = pd.DataFrame({bbid: volatility(fxspot_df[bbid], 24, Returns.LOGARITHMIC) for bbid in fx_crosses})\n",
    "    vol_cur = pd.Series(vol_.tail(1).squeeze() / eq_vol , name=f'6m Realized Vol Ratio (FX / {eq_ric})')\n",
    "    table = pd.concat([cur_cor, pct_cor, vol_cur ], axis=1)\n",
    "    \n",
    "    #price options\n",
    "    eqo = EqOption(option_type='Put', underlier=eq_ric, exchange='NYSE', strike_price='90%', expiration_date='3m', buy_sell='Buy', premium=0)\n",
    "    eqo.resolve()\n",
    "    notional = eqo.strike_price * eqo.multiplier\n",
    "    portfolio = Portfolio()\n",
    "    for cross in fx_crosses:\n",
    "        ratio = table.loc[cross][f'6m Realized Vol Ratio (FX / {eq_ric})']\n",
    "        if cross[0] != 'U':\n",
    "            cross = f'USD{cross[:3]}'\n",
    "        portfolio.append(FXOption(pair=cross, option_type='Call', expiration_date='3m', strike_price=f's+{ratio*10}%', buy_sell='Buy', \n",
    "                            notional_amount=notional/ratio))\n",
    "    portfolio.resolve()\n",
    "    port_df = portfolio.to_frame()\n",
    "    port_df['Cost in bps'] = (port_df['premium'] / port_df['notional_amount'])*1e4\n",
    "    port_df[f'Discount to {eq_ric} (%)'] =(abs(port_df['premium'])/eqo.price() - 1)*100\n",
    "    port_df['Spot'] = list(portfolio.calc(FXSpot).result())\n",
    "    port_df['pair'] = port_df['pair'].str.replace(' ', '')\n",
    "    port_df['pair_'] = g10\n",
    "    port_df = port_df.set_index('pair_')\n",
    "    port_df['Strike'] = [1 / port_df.loc[x]['strike_price'] if x != port_df.loc[x]['pair'] else port_df.loc[x]['strike_price'] for x in port_df.index]\n",
    "    result = table.join([port_df['Strike'], port_df['Spot'],port_df['Cost in bps'],port_df[f'Discount to {eq_ric} (%)']])\n",
    "    return result.sort_values(by=['1y Realized Correlation (%)', f'Discount to {eq_ric} (%)'], ascending=(False, True))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "effective-validity",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style  type=\"text/css\" >\n",
       "#T_2194e_row0_col0,#T_2194e_row3_col6{\n",
       "            background-color:  #023858;\n",
       "            color:  #f1f1f1;\n",
       "        }#T_2194e_row0_col6{\n",
       "            background-color:  #69a5cc;\n",
       "            color:  #000000;\n",
       "        }#T_2194e_row1_col0{\n",
       "            background-color:  #034871;\n",
       "            color:  #f1f1f1;\n",
       "        }#T_2194e_row1_col6{\n",
       "            background-color:  #b9c6e0;\n",
       "            color:  #000000;\n",
       "        }#T_2194e_row2_col0{\n",
       "            background-color:  #034973;\n",
       "            color:  #f1f1f1;\n",
       "        }#T_2194e_row2_col6{\n",
       "            background-color:  #1c7fb8;\n",
       "            color:  #000000;\n",
       "        }#T_2194e_row3_col0{\n",
       "            background-color:  #045382;\n",
       "            color:  #f1f1f1;\n",
       "        }#T_2194e_row4_col0{\n",
       "            background-color:  #056faf;\n",
       "            color:  #f1f1f1;\n",
       "        }#T_2194e_row4_col6{\n",
       "            background-color:  #dddbec;\n",
       "            color:  #000000;\n",
       "        }#T_2194e_row5_col0{\n",
       "            background-color:  #0570b0;\n",
       "            color:  #f1f1f1;\n",
       "        }#T_2194e_row5_col6{\n",
       "            background-color:  #d9d8ea;\n",
       "            color:  #000000;\n",
       "        }#T_2194e_row6_col0{\n",
       "            background-color:  #3f93c2;\n",
       "            color:  #000000;\n",
       "        }#T_2194e_row6_col6{\n",
       "            background-color:  #f4edf6;\n",
       "            color:  #000000;\n",
       "        }#T_2194e_row7_col0{\n",
       "            background-color:  #89b1d4;\n",
       "            color:  #000000;\n",
       "        }#T_2194e_row7_col6,#T_2194e_row8_col0{\n",
       "            background-color:  #fff7fb;\n",
       "            color:  #000000;\n",
       "        }#T_2194e_row8_col6{\n",
       "            background-color:  #5a9ec9;\n",
       "            color:  #000000;\n",
       "        }</style><table id=\"T_2194e_\" ><thead>    <tr>        <th class=\"blank level0\" ></th>        <th class=\"col_heading level0 col0\" >1y Realized Correlation (%)</th>        <th class=\"col_heading level0 col1\" >Corr %-ile</th>        <th class=\"col_heading level0 col2\" >6m Realized Vol Ratio (FX / .N225)</th>        <th class=\"col_heading level0 col3\" >Strike</th>        <th class=\"col_heading level0 col4\" >Spot</th>        <th class=\"col_heading level0 col5\" >Cost in bps</th>        <th class=\"col_heading level0 col6\" >Discount to .N225 (%)</th>    </tr></thead><tbody>\n",
       "                <tr>\n",
       "                        <th id=\"T_2194e_level0_row0\" class=\"row_heading level0 row0\" >AUDUSD</th>\n",
       "                        <td id=\"T_2194e_row0_col0\" class=\"data row0 col0\" >73.22</td>\n",
       "                        <td id=\"T_2194e_row0_col1\" class=\"data row0 col1\" >80.71</td>\n",
       "                        <td id=\"T_2194e_row0_col2\" class=\"data row0 col2\" >0.67</td>\n",
       "                        <td id=\"T_2194e_row0_col3\" class=\"data row0 col3\" >0.72</td>\n",
       "                        <td id=\"T_2194e_row0_col4\" class=\"data row0 col4\" >0.77</td>\n",
       "                        <td id=\"T_2194e_row0_col5\" class=\"data row0 col5\" >-34.22</td>\n",
       "                        <td id=\"T_2194e_row0_col6\" class=\"data row0 col6\" >-67.38</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2194e_level0_row1\" class=\"row_heading level0 row1\" >USDNOK</th>\n",
       "                        <td id=\"T_2194e_row1_col0\" class=\"data row1 col0\" >69.65</td>\n",
       "                        <td id=\"T_2194e_row1_col1\" class=\"data row1 col1\" >82.62</td>\n",
       "                        <td id=\"T_2194e_row1_col2\" class=\"data row1 col2\" >0.94</td>\n",
       "                        <td id=\"T_2194e_row1_col3\" class=\"data row1 col3\" >9.31</td>\n",
       "                        <td id=\"T_2194e_row1_col4\" class=\"data row1 col4\" >8.51</td>\n",
       "                        <td id=\"T_2194e_row1_col5\" class=\"data row1 col5\" >-36.53</td>\n",
       "                        <td id=\"T_2194e_row1_col6\" class=\"data row1 col6\" >-75.05</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2194e_level0_row2\" class=\"row_heading level0 row2\" >USDCAD</th>\n",
       "                        <td id=\"T_2194e_row2_col0\" class=\"data row2 col0\" >69.50</td>\n",
       "                        <td id=\"T_2194e_row2_col1\" class=\"data row2 col1\" >83.57</td>\n",
       "                        <td id=\"T_2194e_row2_col2\" class=\"data row2 col2\" >0.41</td>\n",
       "                        <td id=\"T_2194e_row2_col3\" class=\"data row2 col3\" >1.33</td>\n",
       "                        <td id=\"T_2194e_row2_col4\" class=\"data row2 col4\" >1.28</td>\n",
       "                        <td id=\"T_2194e_row2_col5\" class=\"data row2 col5\" >-24.64</td>\n",
       "                        <td id=\"T_2194e_row2_col6\" class=\"data row2 col6\" >-60.91</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2194e_level0_row3\" class=\"row_heading level0 row3\" >NZDUSD</th>\n",
       "                        <td id=\"T_2194e_row3_col0\" class=\"data row3 col0\" >67.38</td>\n",
       "                        <td id=\"T_2194e_row3_col1\" class=\"data row3 col1\" >90.71</td>\n",
       "                        <td id=\"T_2194e_row3_col2\" class=\"data row3 col2\" >0.57</td>\n",
       "                        <td id=\"T_2194e_row3_col3\" class=\"data row3 col3\" >0.68</td>\n",
       "                        <td id=\"T_2194e_row3_col4\" class=\"data row3 col4\" >0.72</td>\n",
       "                        <td id=\"T_2194e_row3_col5\" class=\"data row3 col5\" >-44.89</td>\n",
       "                        <td id=\"T_2194e_row3_col6\" class=\"data row3 col6\" >-49.14</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2194e_level0_row4\" class=\"row_heading level0 row4\" >GBPUSD</th>\n",
       "                        <td id=\"T_2194e_row4_col0\" class=\"data row4 col0\" >58.75</td>\n",
       "                        <td id=\"T_2194e_row4_col1\" class=\"data row4 col1\" >87.86</td>\n",
       "                        <td id=\"T_2194e_row4_col2\" class=\"data row4 col2\" >0.58</td>\n",
       "                        <td id=\"T_2194e_row4_col3\" class=\"data row4 col3\" >1.30</td>\n",
       "                        <td id=\"T_2194e_row4_col4\" class=\"data row4 col4\" >1.37</td>\n",
       "                        <td id=\"T_2194e_row4_col5\" class=\"data row4 col5\" >-18.03</td>\n",
       "                        <td id=\"T_2194e_row4_col6\" class=\"data row4 col6\" >-79.88</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2194e_level0_row5\" class=\"row_heading level0 row5\" >USDSEK</th>\n",
       "                        <td id=\"T_2194e_row5_col0\" class=\"data row5 col0\" >58.53</td>\n",
       "                        <td id=\"T_2194e_row5_col1\" class=\"data row5 col1\" >78.81</td>\n",
       "                        <td id=\"T_2194e_row5_col2\" class=\"data row5 col2\" >0.69</td>\n",
       "                        <td id=\"T_2194e_row5_col3\" class=\"data row5 col3\" >8.97</td>\n",
       "                        <td id=\"T_2194e_row5_col4\" class=\"data row5 col4\" >8.39</td>\n",
       "                        <td id=\"T_2194e_row5_col5\" class=\"data row5 col5\" >-22.40</td>\n",
       "                        <td id=\"T_2194e_row5_col6\" class=\"data row5 col6\" >-79.09</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2194e_level0_row6\" class=\"row_heading level0 row6\" >EURUSD</th>\n",
       "                        <td id=\"T_2194e_row6_col0\" class=\"data row6 col0\" >50.30</td>\n",
       "                        <td id=\"T_2194e_row6_col1\" class=\"data row6 col1\" >86.43</td>\n",
       "                        <td id=\"T_2194e_row6_col2\" class=\"data row6 col2\" >0.45</td>\n",
       "                        <td id=\"T_2194e_row6_col3\" class=\"data row6 col3\" >1.15</td>\n",
       "                        <td id=\"T_2194e_row6_col4\" class=\"data row6 col4\" >1.20</td>\n",
       "                        <td id=\"T_2194e_row6_col5\" class=\"data row6 col5\" >-10.95</td>\n",
       "                        <td id=\"T_2194e_row6_col6\" class=\"data row6 col6\" >-84.34</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2194e_level0_row7\" class=\"row_heading level0 row7\" >USDCHF</th>\n",
       "                        <td id=\"T_2194e_row7_col0\" class=\"data row7 col0\" >41.07</td>\n",
       "                        <td id=\"T_2194e_row7_col1\" class=\"data row7 col1\" >87.38</td>\n",
       "                        <td id=\"T_2194e_row7_col2\" class=\"data row7 col2\" >0.46</td>\n",
       "                        <td id=\"T_2194e_row7_col3\" class=\"data row7 col3\" >0.94</td>\n",
       "                        <td id=\"T_2194e_row7_col4\" class=\"data row7 col4\" >0.90</td>\n",
       "                        <td id=\"T_2194e_row7_col5\" class=\"data row7 col5\" >-9.08</td>\n",
       "                        <td id=\"T_2194e_row7_col6\" class=\"data row7 col6\" >-87.23</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_2194e_level0_row8\" class=\"row_heading level0 row8\" >USDJPY</th>\n",
       "                        <td id=\"T_2194e_row8_col0\" class=\"data row8 col0\" >15.11</td>\n",
       "                        <td id=\"T_2194e_row8_col1\" class=\"data row8 col1\" >99.76</td>\n",
       "                        <td id=\"T_2194e_row8_col2\" class=\"data row8 col2\" >0.33</td>\n",
       "                        <td id=\"T_2194e_row8_col3\" class=\"data row8 col3\" >108.65</td>\n",
       "                        <td id=\"T_2194e_row8_col4\" class=\"data row8 col4\" >105.18</td>\n",
       "                        <td id=\"T_2194e_row8_col5\" class=\"data row8 col5\" >-17.39</td>\n",
       "                        <td id=\"T_2194e_row8_col6\" class=\"data row8 col6\" >-66.10</td>\n",
       "            </tr>\n",
       "    </tbody></table>"
      ],
      "text/plain": [
       "<pandas.io.formats.style.Styler at 0x1a9b08966c8>"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "start = RelativeDate('-5y').apply_rule()\n",
    "end = RelativeDate('-1b').apply_rule()\n",
    "g10 = ['USDJPY', 'EURUSD', 'AUDUSD', 'GBPUSD', 'USDCAD', 'USDNOK', 'NZDUSD', 'USDSEK', 'USDCHF']\n",
    "\n",
    "#example equity index rics '.FTSE','.N225','.SPX' or '.STOXX50E'\n",
    "eq_ric = '.N225'\n",
    "table = calculate_screen(eq_ric='.N225', fx_crosses=g10)\n",
    "table.style.background_gradient(\n",
    "        subset=['1y Realized Correlation (%)', f'Discount to {eq_ric} (%)'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "labeled-language",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1a9b10e7348>"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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7bfffvLxxx8/XnHf3//+94V5eXlHf/vb33b+9ttvs9q0aePS3B0eKRlZ11gykojIfZ4oGYlNb1iwblokio77IbhVKfpPzkav+5pklaqGVDKSiIgas1735TfVZOwO3nMmIiLyMkzOREREXobJmYiIyMswORMREXkZJmciIiIvw+RMREQNWn2UjASAKVOmtI6Li0tOSEhI6tq1a+KsWbMuzrGdk5NjNpvNPadPn35JJarIyMhu8fHxSfHx8UkdO3ZMfuihh9pVNZ93ZZiciYio0appycjp06dHfP755803b968Kysra+dXX32123FekPnz57fs3r372ffff/+yoh3r1q3bs2fPnp1btmzZdeDAAf+RI0fGuBu3R5KziDwlItki8qPxGWy0x4rIOYf2OZ6Ij4iI6sd7u9+zDFg8oFtKekrqgMUDur23+z2vLBn54osvtnnttdcO2efKtlgs1gkTJpy0b//+++9bZsyYcfjYsWO++/fvd1p2KjQ01Jqenn5o9erVLY4dO+ZWzUhP9pxfVNUexmelQ/t+h/YHPBYdERHVqfd2v2eZvml6zIlzJ/wUihPnTvhN3zQ9pj4TdE1KRubn55vOnj3rk5SU5HTO73379vnm5eX5DhgwoPiWW24pmD9/fqXxWywWa2RkZOmOHTvcKn7BYW0iIroi5mydE1l6ofSSvFN6odQ0Z+scry0Z6cz8+fMtt9xySwEA3HPPPflLliyp8sdFTabJ9uT0neNFZBSADAD/q6oFRnuciPwA4DSAv6nq1x6LkIiI6szJcyedVmaqrN1VlZWMjIuLKwFsJSOTk5PzJk6cmBcWFtajupKRFovFGhQUZN25c6efs97zkiVLLHl5eb5Lly61AMDx48d9MzMz/bt161ZScduCggLT0aNH/bp16+Z0OL0y9dZzFpE1IrLdyWcogNkAOgLoASAHwAvGbjkAolX1KgATASwUkeaVHH+MiGSISEZeXl59XQYREdWRsMAwp8PElbW7qj5KRj7yyCM5DzzwQEx+fr4JAAoLC02zZs0K27Ztm//Zs2d9jh8/vi07OzszOzs7c/z48bnp6emX9Z4LCwtNo0ePjrnxxhtPRUREuFSNyq7ees6qOsiV7UTkdQArjH1KAJQY3zeLyH4A8bD1rise/zUArwG2qlR1FDYREdWTB7o/kD190/QYx6FtPx8/6wPdH/C6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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.scatterplot(x=table['1y Realized Correlation (%)'], y=table[f'Discount to {eq_ric} (%)'], hue=table.index, s=60)\n",
    "plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}